home *** CD-ROM | disk | FTP | other *** search
-
- ===============================================
-
- @(#) OKAMI SHELL VERSION 1.4 - SYSTEM-FUNKTION
-
- ===============================================
- Stand: 1.12.91
-
-
- Um die Okami-Shell von eigenen Programmen aus aufrufen zu können,
- gibt es die Funktion system. Beispiel:
-
- DiskDir()
- {
- if (system((char*)0))
- {
- system("ls a:\*");
- system("df a:");
- }
- else
- puts("Keine Shell installiert!");
- }
-
- Durch Aufruf der Funktion DiskDir werden Inhalt und freier Speicherplatz
- von Laufwerk A: ausgegeben. Dies wird erreicht durch Aufruf der Shell
- mit den Kommandos `ls a:\*' und `df a:'.
-
- Die system-Funktion kann auf zwei Arten aufgerufen werden:
- 1) mit einem Zeiger auf einen String, dann wird dieser String als Kom-
- mando von der Shell ausgeführt. Der Rückgabewert von system ist dann
- der Rückgabewert dieses Kommandos. Das Kommando kann alles enthal-
- ten, was auch über die Tastatur in der Shell eingegeben werden kann.
- Wenn keine Shell installiert ist, gibt system den Wert -999 zurück.
- 2) mit einem Null-Pointer ((char*)0), dann gibt system den Wert 1 zu-
- rück, wenn eine Shell installiert ist, und sonst den Wert 0. Ein Programm
- sollte das Vorhandensein einer Shell auf diese Weise testen, bevor es
- sich auf system-Aufrufe verläßt.
-
- Wenn system mit der Okami-Shell benutzt wird, kann ein Leerstring über-
- geben werden. In diesem Fall geht die Shell in den interaktiven Modus,
- der mit Control-D oder durch Eingabe von exit beendet werden kann.
- (Dies ist allerdings eine Eigenschaft der Shell, nicht der system-Funktion).
-
- Um die system-Funktion benutzen zu können, muß die Datei system.c ein-
- gebunden werden. Dazu gibt es folgende Möglichkeiten:
- 1. #include "system.c"
- 2. Kompilieren der Datei system.c und Mit-Linken der Objektdatei
- system.o.
- 3. Kompilieren der Datei system.c und Einbinden der Objektdatei system.o
- in eine Library.
-
- Der Aufruf der Shell erfolgt über den _shell_p-Zeiger. Daher sollte auch
- jede andere system-Funktion aus diversen Compiler-Libraries, die diesen
- Zeiger benutzt, funktionieren.
- Das bedeutet aber auch, daß man auf diese Weise die Shell nur aufrufen
- kann, wenn sie sich bereits im Speicher befindet, wenn also das Pro-
- gramm, das system benutzt, von der Shell gestartet wurde. In anderen
- Fällen kann die Shell mit der Gemdos-Funktion Pexec gestartet werden.
-
-
- Wenn system von einem GEM-Programm aus benutzt wird und eine Bild-
- schirmausgabe erzeugen soll, z.B. um dem Anwender aus einem Pro-
- gramm heraus Shellzugriff zu ermöglichen, dann sollte das GEM-Pro-
- gramm vorher eine AES-Deinitialisierung (appl_exit, Bildschirm in Textmo-
- dus etc.) ausführen.
-
- Ein Beispielprogramm ist in der Datei system.c enthalten. Um es zu akti-
- vieren, muß in der Datei
- #define TEST 0
- auf
- #define TEST 1
- umgeändert werden. Für ein weiteres Beispiel siehe die Datei gem.c .
-
- system.c sollte mit jedem C-Compiler funktionieren, der nicht auf Prototy-
- pen besteht. Ggfs. muß anstelle von <osbind.h> eine andere Header-Datei
- eingebunden werden, nämlich die, die die Gemdos-Funktion Super defi-
- niert. (Für Turbo-C und Pure-C ist das <tos.h>, aber man kann hier auch
- das in den entsprechenden Libraries enthaltene system() benutzen.)
-
-